De StringBuilder klasse
Home

De StringBuilder klasse

De StringBuilder klasse

Dynamische strings bouwen op een efficiënte manier met StringBuilder

Het string gegevenstype stelt een onveranderlijke tekst voor. Eenmaal een string gecreëerd is, kan die niet meer gewijzigd worden. Om op een efficiënte manier een string dynamisch opbouwen beschikt het FCL (Framework Class Library) over een type System.Text.StringBuilder waarmee je dynamische bewerkingen met strings en karakters kan uitvoeren. Logisch gezien bestaat een StringBuilder object uit een veld die verwijst naar een array van char structuren. Met leden van de klasse StringBuilder kan je die karakterarray manipuleren. Als de string is opgebouwd kan je de array van karakters converteren naar een string met behulp van de StringBuilder.ToString() methode. Die methode retourneert een referentie naar het string veld dat in het StringBuilder object wordt bijgehouden. Dat maakt de ToString methode van StringBuilder zeer snel omdat de array van karakters niet gekopieerd wordt. De string die door de ToString methode wordt geretourneerd wijzig je best niet meer. Zie hieronder om te weten waarom.

De constructor van de StringBuilder klasse

De CLR en een taal als C# bezit geen speciale informatie over de StringBuilder klasse. C# beschouwt het niet als een primitief type en dus moet je een object aanmaken zoals je dat voor alle niet primitieve gegevenstypes zou doen:

private StringBuilder sb = new StringBuilder();

De StringBuilder heeft verschillende constructors. De taak van elke constructor bestaat erin de toestand te initialiseren van elk StringBuilder object:

De leden van StringBuilder klasse

In tegenstelling met een String, stelt een StringBuilder object een wijzigbare string voor. Dus de meeste leden wijzigen de inhoud in de array van karakters en toch worden er geen nieuwe objecten op de managed heap geplaatst. De StringBuilder plaatst een nieuw object op de heap slechts in twee gevallen:

  1. Je bouwt dynamisch een string op waarvan de lengte groter is dan de ingestelde capaciteit.
  2. Je probeert de array van karakters te wijzigen nadat je de ToString methode hebt aangeroepen.

Een overzicht van de leden van de StringBuilder klasse:

Lid Type Beschrijving
MaxCapacity Alleen lezen eigenschap Retourneert het maximum aantal karakters die in de string geplaatst kan worden.
Capacity Schrijven/lezen Bepaalt of retourneert de grootte van de karakter array. Als de ingestelde grootte groter is dan de string of groter dan MaxCapacity veroorzaakt MaxCapacity een foutmelding ArgumentOutOfRangeException.
EnsureCapacity Methode Zorgt ervoor dat de karakter array tenminste de ingesteld e grootte heeft.
Length Schrijven/lezen Bepaalt of retourneert het aantal karakters in de string. Indien die nu nul is wordt de inhoud van StringBuilder een lege string.
ToString Methode Zonder parameters retourneert die methode een String die de karakter array van StringBuilder voorstelt.
Chars Read/Write indexer Bepaalt of retourneert het karakter op die positie.
Append Methode Voegt een object toe aan het einde van de karakter array. De array wordt indien nodig groter gemaakt. Het object wordt naar een string geconverteerd met behulp van algemene format regels en met de ingestelde cultuur van de huidige thread.
Insert Methode Voegt een object toe in de karakter array.
AppendFormat Methode Voegt een object aan het einde van de karakter toe. Voor de formatteringopties, zie Tekenreeksen formatteren.
AppendLine Methode Doet hetzelfde als Append maar voegt een witte lijn aan het einde toe.
Replace Methode
Remove Methode
Equals Methode
CopyTo Methode Kopieert een subset van de karakters van StringBuilder naar een char array.

Oefening

Maak een methode die de efficiëntie van String vergelijkt met StringBuilder.

JI
2016-11-23 13:31:31